<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<meta name="keywords" content="Nacos,Spring,快速开始" />
	<meta name="description" content="本文主要面向 Spring 的使用者，通过两个示例来介绍如何使用 Nacos 来实现分布式环境下的配置管理和服务发现。" />
	<!-- 网页标签标题 -->
	<title>Nacos Spring 快速开始</title>
	<link rel="shortcut icon" href="https://img.alicdn.com/tfs/TB1hgJpHAPoK1RjSZKbXXX1IXXa-64-64.png"/>
	<link rel="stylesheet" href="/build/documentation.css" />
</head>
<body>
	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/nacos_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a href="/zh-cn/index.html">首页</a></li><li class="menu-item menu-item-normal menu-item-normal-active"><a href="/zh-cn/docs/what-is-nacos.html">文档</a></li><li class="menu-item menu-item-normal"><a href="/zh-cn/blog/index.html">博客</a></li><li class="menu-item menu-item-normal"><a href="/zh-cn/community/index.html">社区</a></li><li class="menu-item menu-item-normal"><a href="https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0">企业版Nacos</a><img class="menu-img" src="https://img.alicdn.com/tfs/TB1esl_m.T1gK0jSZFrXXcNCXXa-200-200.png"/></li><li class="menu-item menu-item-normal"><a href="http://console.nacos.io/nacos/index.html">控制台样例</a></li></ul></div></div></header><div class="bar"><div class="bar-body"><img src="/img/docs.png" class="front-img"/><div class="bar-title"><span>Nacos 文档</span><div class="bone bone-light"></div></div><img src="/img/docs.png" class="back-img"/></div></div><section class="content-section"><div class="content-body"><div class="sidemenu"><div class="sidemenu-toggle"><img src="https://img.alicdn.com/tfs/TB1E6apXHGYBuNjy0FoXXciBFXa-200-200.png"/></div><ul><li class="menu-item menu-item-level-1"><span>Nacos </span><ul><li style="height:180px;overflow:hidden" class="menu-item menu-item-level-2"><span>Nacos是什么?<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/what-is-nacos.html" target="_self">Nacos简介</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/concepts.html" target="_self">概念</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/architecture.html" target="_self">架构</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/feature-list.html" target="_self">功能和需求列表</a></li></ul></li><li style="height:324px;overflow:hidden" class="menu-item menu-item-level-2"><span>快速开始<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start.html" target="_self">Nacos</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-spring.html" target="_self">Nacos Spring</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-spring-boot.html" target="_self">Nacos Spring Boot</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-spring-cloud.html" target="_self">Nacos Spring Cloud</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/quick-start-docker.html" target="_self">Nacos Docker</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/use-nacos-with-dubbo.html" target="_self">Nacos Dubbo</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/use-nacos-with-kubernetes.html" target="_self">Nacos k8s</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-sync.html" target="_self">Nacos Sync</a></li></ul></li><li style="height:252px;overflow:hidden" class="menu-item menu-item-level-2"><span>用户指南<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/sdk.html" target="_self">Java的SDK</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/other-language.html" target="_self">其他语言的SDK</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/open-api.html" target="_self">Open-API指南</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-spring.html" target="_self">Nacos Spring</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/system-configurations.html" target="_self">Nacos系统参数介绍</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/faq.html" target="_self">FAQ</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>运维指南<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/deployment.html" target="_self">部署手册</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/cluster-mode-quick-start.html" target="_self">集群部署说明</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/management-api.html" target="_self">运维API</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/console-guide.html" target="_self">控制台手册</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/monitor-guide.html" target="_self">监控手册</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-config-benchmark.html" target="_self">服务配置模块压测报告</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-naming-benchmark.html" target="_self">服务发现模块压测报告</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-sync-use.html" target="_self">其他环境迁移到Nacos</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>开源共建<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/contributing.html" target="_self">贡献源码</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/contributing-flow.html" target="_self">贡献流程</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/pull-request.html" target="_self">pull request模板</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/how-to-reporting-bugs.html" target="_self">如何提交问题报告</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>社区<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/community.html" target="_self">社区</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/nacos-dev.html" target="_self">开发团队</a></li></ul></li></ul></li></ul></div><div class="doc-content markdown-body"><h1>Nacos Spring 快速开始</h1>
<p>本文主要面向 Spring 的使用者，通过两个示例来介绍如何使用 Nacos 来实现分布式环境下的配置管理和服务发现。</p>
<p>关于 Nacos Spring 的详细文档请参看：<a href="https://github.com/nacos-group/nacos-spring-project/wiki/Nacos-Spring-Project-0.3.1-%E6%96%B0%E5%8A%9F%E8%83%BD%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C">nacos-spring-project</a>。</p>
<ul>
<li>通过 Nacos server 和 Nacos Spring 配置管理模块，实现配置的动态变更；</li>
<li>通过 Nacos server 和 Nacos Spring 服务发现模块，实现服务的注册与发现。</li>
</ul>
<h2>前提条件</h2>
<p>您需要先下载 Nacos 并启动 Nacos server。操作步骤参见 <a href="https://nacos.io/zh-cn/docs/quick-start.html">Nacos 快速入门</a>。</p>
<h2>启动配置管理</h2>
<p>启动了 Nacos server 后，您就可以参考以下示例代码，为您的 Spring 应用启动 Nacos 配置管理服务了。完整示例代码请参考：<a href="https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-config-example">nacos-spring-config-example</a></p>
<ol>
<li>添加依赖。</li>
</ol>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba.nacos&lt;/groupId&gt;
    &lt;artifactId&gt;nacos-spring-context&lt;/artifactId&gt;
    &lt;version&gt;${latest.version}&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<p>最新版本可以在 maven 仓库，如 &quot;<a href="https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-spring-context">mvnrepository.com</a>&quot; 中获取。</p>
<ol start="2">
<li>添加 <code>@EnableNacosConfig</code> 注解启用 Nacos Spring 的配置管理服务。以下示例中，我们使用 <code>@NacosPropertySource</code> 加载了 <code>dataId</code> 为 <code>example</code> 的配置源，并开启自动更新：</li>
</ol>
<pre><code>@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = &quot;127.0.0.1:8848&quot;))
@NacosPropertySource(dataId = &quot;example&quot;, autoRefreshed = true)
public class NacosConfiguration {

}
</code></pre>
<ol start="3">
<li>通过 Nacos 的 <code>@NacosValue</code> 注解设置属性值。</li>
</ol>
<pre><code>@Controller
@RequestMapping(&quot;config&quot;)
public class ConfigController {

    @NacosValue(value = &quot;${useLocalCache:false}&quot;, autoRefreshed = true)
    private boolean useLocalCache;

    @RequestMapping(value = &quot;/get&quot;, method = GET)
    @ResponseBody
    public boolean get() {
        return useLocalCache;
    }
}
</code></pre>
<ol start="4">
<li>
<p>启动 Tomcat，调用 <code>curl http://localhost:8080/config/get</code>尝试获取配置信息。由于此时还未发布过配置，所以返回内容是 <code>false</code>。</p>
</li>
<li>
<p>通过调用 <a href="https://nacos.io/zh-cn/docs/open-api.html">Nacos Open API</a> 向 Nacos Server 发布配置：dataId 为<code>example</code>，内容为<code>useLocalCache=true</code></p>
</li>
</ol>
<pre><code>curl -X POST &quot;http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&amp;group=DEFAULT_GROUP&amp;content=useLocalCache=true&quot;
</code></pre>
<ol start="6">
<li>再次访问 <code>http://localhost:8080/config/get</code>，此时返回内容为<code>true</code>，说明程序中的<code>useLocalCache</code>值已经被动态更新了。</li>
</ol>
<h2>启动服务发现</h2>
<p>本节演示如何在您的 Spring 项目中启动 Nacos 的服务发现功能。完整示例代码请参考：<a href="https://github.com/nacos-group/nacos-examples/tree/master/nacos-spring-example/nacos-spring-discovery-example">nacos-spring-discovery-example</a></p>
<ol>
<li>添加依赖。</li>
</ol>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;com.alibaba.nacos&lt;/groupId&gt;
    &lt;artifactId&gt;nacos-spring-context&lt;/artifactId&gt;
    &lt;version&gt;${latest.version}&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<p>最新版本可以在 maven 仓库，如 &quot;<a href="https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-spring-context">mvnrepository.com</a>&quot; 中获取。</p>
<ol start="2">
<li>通过添加 <code>@EnableNacosDiscovery</code> 注解开启 Nacos Spring 的服务发现功能：</li>
</ol>
<pre><code>@Configuration
@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = &quot;127.0.0.1:8848&quot;))
public class NacosConfiguration {

}
</code></pre>
<ol start="3">
<li>使用 <code>@NacosInjected</code> 注入  Nacos 的 <code>NamingService</code> 实例：</li>
</ol>
<pre><code>@Controller
@RequestMapping(&quot;discovery&quot;)
public class DiscoveryController {

    @NacosInjected
    private NamingService namingService;

    @RequestMapping(value = &quot;/get&quot;, method = GET)
    @ResponseBody
    public List&lt;Instance&gt; get(@RequestParam String serviceName) throws NacosException {
        return namingService.getAllInstances(serviceName);
    }
}
</code></pre>
<ol start="4">
<li>
<p>启动 Tomcat，调用 <code>curl http://localhost:8080/discovery/get?serviceName=example</code>，此时返回为空 JSON 数组<code>[]</code>。</p>
</li>
<li>
<p>通过调用 <a href="https://nacos.io/zh-cn/docs/open-api.html">Nacos Open API</a> 向  Nacos server 注册一个名称为 <code>example</code> 服务。</p>
</li>
</ol>
<pre><code>curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&amp;ip=127.0.0.1&amp;port=8080'
</code></pre>
<ol start="6">
<li>再次访问 <code>curl http://localhost:8080/discovery/get?serviceName=example</code>，此时返回内容为：</li>
</ol>
<pre><code>[
  {
    &quot;instanceId&quot;: &quot;127.0.0.1#8080#DEFAULT#example&quot;,
    &quot;ip&quot;: &quot;127.0.0.1&quot;,
    &quot;port&quot;: 8080,
    &quot;weight&quot;: 1.0,
    &quot;healthy&quot;: true,
    &quot;cluster&quot;: {
      &quot;serviceName&quot;: null,
      &quot;name&quot;: &quot;&quot;,
      &quot;healthChecker&quot;: {
        &quot;type&quot;: &quot;TCP&quot;
      },
      &quot;defaultPort&quot;: 80,
      &quot;defaultCheckPort&quot;: 80,
      &quot;useIPPort4Check&quot;: true,
      &quot;metadata&quot;: {}
    },
    &quot;service&quot;: null,
    &quot;metadata&quot;: {}
  }
]
</code></pre>
<h2>相关项目</h2>
<ul>
<li><a href="https://github.com/alibaba/nacos">Nacos</a></li>
<li><a href="https://github.com/nacos-group/nacos-spring-project">Nacos Spring</a></li>
<li><a href="https://github.com/nacos-group/nacos-spring-boot-project">Nacos Spring Boot</a></li>
<li><a href="https://github.com/alibaba/spring-cloud-alibaba">Spring Cloud Alibaba</a></li>
</ul>
</div></div></section><footer class="footer-container"><div class="footer-body"><img src="/img/nacos_gray.png"/><div class="cols-container"><div class="col col-12"><h3>愿景</h3><p>Nacos 通过提供简单易用的动态服务发现、服务配置、服务共享与管理等服务基础设施，帮助用户在云原生时代，在私有云、混合云或者公有云等所有云环境中，更好的构建、交付、管理自己的微服务平台，更快的复用和组合业务服务，更快的交付商业创新的价值，从而为用户赢得市场。</p></div><div class="col col-6"><dl><dt>文档</dt><dd><a href="/zh-cn/docs/what-is-nacos.html" target="_self">概览</a></dd><dd><a href="/zh-cn/docs/quick-start.html" target="_self">快速开始</a></dd><dd><a href="/zh-cn/docs/contributing.html" target="_self">开发者指南</a></dd></dl></div><div class="col col-6"><dl><dt>资源</dt><dd><a href="/zh-cn/community/index.html" target="_self">社区</a></dd><dd><a href="https://www.aliyun.com/product/acm?source_type=nacos_pc_20181219" target="_self">云服务 ACM</a></dd><dd><a href="https://www.aliyun.com/product/edas?source_type=nacos_pc_20181219" target="_self">云服务 EDAS</a></dd><dd><a href="https://www.aliyun.com/product/ahas?source_type=nacos_pc_20190225" target="_self">云服务 AHAS</a></dd></dl></div></div><div class="copyright"><span>@ 2018 The Nacos Authors | An Alibaba Middleware (Aliware) Project</span></div></div></footer></div></div>
	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
	<script>
		window.rootPath = '';
  </script>
	<script src="/build/documentation.js"></script>
</body>
</html>